#include<stdio.h>
#include<string.h>

swap(char* e1,char* e2,size_t width)
{
    for(int i=0;i<width;i++)
    {
        char tem=*e1;
        *e1=*e2;
        *e2=tem;
        e1++;
        e2++;
    }
}

int cmp(const void* e1,const void* e2)
{
    return *(int*)e1-*(int*)e2;
}


void my_qsort(void* base,size_t sz,size_t width ,int(*cmp)(const void*p1,const void*p2))
{
    for(int i=0;i<sz-1;i++)
    {
        for(int j=0;j<sz-1-i;j++)
        {
            if(cmp(char*)base+j*width,(char*)base+(j+1)*width)
            {
                swap((char*)base+j*width,(char*)base+(j+1)*width,width);
            }
        }
    }
}



int main()
{
    int arr[]={3,5,7,4,3,8,3,10,23};
    int sz=sizeof(arr)/sizeof(arr[0]);
    my_qsort(arr,sz,sizeof(arr[0]),cmp);
    for(int i=0;i<sz;i++)
    {
        printf("%d ",arr[i]);
    }
}